package com.haixiaoke.saas.repository.service;

import com.haixiaoke.saas.repository.dto.MetroStationDTO;
import com.haixiaoke.saas.repository.pojo.MetroStation;

import java.util.List;

/**
 * 地铁车站Service接口
 *
 * @author haixiaoke
 * @date 2023-04-07
 */
public interface IMetroStationService {

    /**
     * 查询地铁车站
     *
     * @param stationId 地铁车站主键
     * @return 地铁车站
     */
    public MetroStation selectMetroStationByStationId(Long stationId);

    /**
     * 查询地铁车站
     *
     * @param stationIds 地铁车站主键
     * @return 地铁车站
     */
    public List<MetroStation> selectMetroStationByStationIdIn(List<Long> stationIds);

    /**
     * 查询地铁车站列表
     *
     * @param metroStation 地铁车站
     * @return 地铁车站集合
     */
    List<MetroStation> selectMetroStationList(MetroStation metroStation);

    /**
     * 新增地铁车站
     *
     * @param metroStationDTO 地铁车站
     * @return 结果
     */
    public int insertMetroStation(MetroStationDTO metroStationDTO);

    /**
     * 修改地铁车站
     *
     * @param metroStation 地铁车站
     * @return 结果
     */
    int updateMetroStation(MetroStation metroStation);

    /**
     * 批量删除地铁车站
     *
     * @param stationIds 需要删除的地铁车站主键集合
     * @return 结果
     */
    int deleteMetroStationByStationIds(Long[] stationIds);

    /**
     * 删除地铁车站信息
     *
     * @param stationId 地铁车站主键
     * @return 结果
     */
    int deleteMetroStationByStationId(Long stationId);

    /**
     * 校验经纬度是否存在
     * @param longitude 经度
     * @param latitude  纬度
     * @return
     */
    boolean checkLongitudeAndLatitude(Long longitude, Long latitude);

    /**
     * 根据省市校验站台是否存在
     * @param stationName   站台名称
     * @param provinceId    省id
     * @param cityId        市id
     * @return
     */
    boolean checkStationUniqueness(String stationName,Long provinceId, Long cityId);

    /**
     * 根据id进行软删除
     * @param stationIds
     * @return
     */
    int softDeleteMetroStationByStationIds(Long[] stationIds);

    String selectMetroStationNamesByStationIdIn(List<Long> stationIds);


}
